home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 January: Mac OS SDK / Dev.CD Jan 00 SDK1.toast / Development Kits / Mac OS / QuickTime / QuickTime 3 Interfaces & Libs / QTDevWin / CIncludes / StandardFile.h < prev    next >
Encoding:
C/C++ Source or Header  |  1998-08-21  |  11.6 KB  |  338 lines  |  [TEXT/dosa]

  1. /*
  2.      File:        StandardFile.h
  3.  
  4.      Contains:    Standard File package Interfaces.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    QuickTime 3.0
  8.  
  9.      Copyright:    © 1990-1995, 1997-1998 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18. #ifndef __STANDARDFILE__
  19. #define __STANDARDFILE__
  20.  
  21. #ifndef __MACTYPES__
  22. #include <MacTypes.h>
  23. #endif
  24. #ifndef __DIALOGS__
  25. #include <Dialogs.h>
  26. #endif
  27. #ifndef __FILES__
  28. #include <Files.h>
  29. #endif
  30.  
  31.  
  32.  
  33. #if PRAGMA_ONCE
  34. #pragma once
  35. #endif
  36.  
  37. #ifdef __cplusplus
  38. extern "C" {
  39. #endif
  40.  
  41. #if PRAGMA_IMPORT
  42. #pragma import on
  43. #endif
  44.  
  45. #if PRAGMA_STRUCT_ALIGN
  46.     #pragma options align=mac68k
  47. #elif PRAGMA_STRUCT_PACKPUSH
  48.     #pragma pack(push, 2)
  49. #elif PRAGMA_STRUCT_PACK
  50.     #pragma pack(2)
  51. #endif
  52.  
  53.  
  54. enum {
  55.                                                                 /* resource IDs of pre-7.0 get and put dialogs */
  56.     putDlgID                    = -3999,
  57.     getDlgID                    = -4000
  58. };
  59.  
  60.  
  61. enum {
  62.                                                                 /* item offsets of pre-7.0 get and put dialogs */
  63.     putSave                        = 1,
  64.     putCancel                    = 2,
  65.     putEject                    = 5,
  66.     putDrive                    = 6,
  67.     putName                        = 7,
  68.     getOpen                        = 1,
  69.     getCancel                    = 3,
  70.     getEject                    = 5,
  71.     getDrive                    = 6,
  72.     getNmList                    = 7,
  73.     getScroll                    = 8
  74. };
  75.  
  76.  
  77. enum {
  78.                                                                 /* resource IDs of 7.0 get and put dialogs */
  79.     sfPutDialogID                = -6043,
  80.     sfGetDialogID                = -6042
  81. };
  82.  
  83.  
  84. enum {
  85.                                                                 /* item offsets of 7.0 get and put dialogs */
  86.     sfItemOpenButton            = 1,
  87.     sfItemCancelButton            = 2,
  88.     sfItemBalloonHelp            = 3,
  89.     sfItemVolumeUser            = 4,
  90.     sfItemEjectButton            = 5,
  91.     sfItemDesktopButton            = 6,
  92.     sfItemFileListUser            = 7,
  93.     sfItemPopUpMenuUser            = 8,
  94.     sfItemDividerLinePict        = 9,
  95.     sfItemFileNameTextEdit        = 10,
  96.     sfItemPromptStaticText        = 11,
  97.     sfItemNewFolderUser            = 12
  98. };
  99.  
  100.  
  101. enum {
  102.                                                                 /* pseudo-item hits for use in DlgHook */
  103.     sfHookFirstCall                = -1,
  104.     sfHookCharOffset            = 0x1000,
  105.     sfHookNullEvent                = 100,
  106.     sfHookRebuildList            = 101,
  107.     sfHookFolderPopUp            = 102,
  108.     sfHookOpenFolder            = 103,                            /* the following are only in system 7.0+ */
  109.     sfHookLastCall                = -2,
  110.     sfHookOpenAlias                = 104,
  111.     sfHookGoToDesktop            = 105,
  112.     sfHookGoToAliasTarget        = 106,
  113.     sfHookGoToParent            = 107,
  114.     sfHookGoToNextDrive            = 108,
  115.     sfHookGoToPrevDrive            = 109,
  116.     sfHookChangeSelection        = 110,
  117.     sfHookSetActiveOffset        = 200
  118. };
  119.  
  120.  
  121. /* the refcon field of the dialog record during a
  122.  modalfilter or dialoghook contains one of the following */
  123.  
  124. enum {
  125.     sfMainDialogRefCon            = FOUR_CHAR_CODE('stdf'),
  126.     sfNewFolderDialogRefCon        = FOUR_CHAR_CODE('nfdr'),
  127.     sfReplaceDialogRefCon        = FOUR_CHAR_CODE('rplc'),
  128.     sfStatWarnDialogRefCon        = FOUR_CHAR_CODE('stat'),
  129.     sfLockWarnDialogRefCon        = FOUR_CHAR_CODE('lock'),
  130.     sfErrorDialogRefCon            = FOUR_CHAR_CODE('err ')
  131. };
  132.  
  133.  
  134.  
  135. struct SFReply {
  136.     Boolean                         good;
  137.     Boolean                         copy;
  138.     OSType                             fType;
  139.     short                             vRefNum;
  140.     short                             version;
  141.     StrFileName                     fName;                        /* a Str63 on MacOS */
  142. };
  143. typedef struct SFReply                    SFReply;
  144.  
  145. struct StandardFileReply {
  146.     Boolean                         sfGood;
  147.     Boolean                         sfReplacing;
  148.     OSType                             sfType;
  149.     FSSpec                             sfFile;
  150.     ScriptCode                         sfScript;
  151.     short                             sfFlags;
  152.     Boolean                         sfIsFolder;
  153.     Boolean                         sfIsVolume;
  154.     long                             sfReserved1;
  155.     short                             sfReserved2;
  156. };
  157. typedef struct StandardFileReply        StandardFileReply;
  158. /* for CustomXXXFile, ActivationOrderListPtr parameter is a pointer to an array of item numbers */
  159.  
  160. typedef const short *                    ActivationOrderListPtr;
  161. typedef CALLBACK_API( short , DlgHookProcPtr )(short item, DialogPtr theDialog);
  162. typedef CALLBACK_API( Boolean , FileFilterProcPtr )(CInfoPBPtr pb);
  163. /* the following also include an extra parameter of "your data pointer" */
  164. typedef CALLBACK_API( short , DlgHookYDProcPtr )(short item, DialogPtr theDialog, void *yourDataPtr);
  165. typedef CALLBACK_API( Boolean , ModalFilterYDProcPtr )(DialogPtr theDialog, EventRecord *theEvent, short *itemHit, void *yourDataPtr);
  166. typedef CALLBACK_API( Boolean , FileFilterYDProcPtr )(CInfoPBPtr pb, void *yourDataPtr);
  167. typedef CALLBACK_API( void , ActivateYDProcPtr )(DialogPtr theDialog, short itemNo, Boolean activating, void *yourDataPtr);
  168. typedef STACK_UPP_TYPE(DlgHookProcPtr)                             DlgHookUPP;
  169. typedef STACK_UPP_TYPE(FileFilterProcPtr)                         FileFilterUPP;
  170. typedef STACK_UPP_TYPE(DlgHookYDProcPtr)                         DlgHookYDUPP;
  171. typedef STACK_UPP_TYPE(ModalFilterYDProcPtr)                     ModalFilterYDUPP;
  172. typedef STACK_UPP_TYPE(FileFilterYDProcPtr)                     FileFilterYDUPP;
  173. typedef STACK_UPP_TYPE(ActivateYDProcPtr)                         ActivateYDUPP;
  174. enum { uppDlgHookProcInfo = 0x000003A0 };                         /* pascal 2_bytes Func(2_bytes, 4_bytes) */
  175. enum { uppFileFilterProcInfo = 0x000000D0 };                     /* pascal 1_byte Func(4_bytes) */
  176. enum { uppDlgHookYDProcInfo = 0x00000FA0 };                     /* pascal 2_bytes Func(2_bytes, 4_bytes, 4_bytes) */
  177. enum { uppModalFilterYDProcInfo = 0x00003FD0 };                 /* pascal 1_byte Func(4_bytes, 4_bytes, 4_bytes, 4_bytes) */
  178. enum { uppFileFilterYDProcInfo = 0x000003D0 };                     /* pascal 1_byte Func(4_bytes, 4_bytes) */
  179. enum { uppActivateYDProcInfo = 0x000036C0 };                     /* pascal no_return_value Func(4_bytes, 2_bytes, 1_byte, 4_bytes) */
  180. #define NewDlgHookProc(userRoutine)                             (DlgHookUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDlgHookProcInfo, GetCurrentArchitecture())
  181. #define NewFileFilterProc(userRoutine)                             (FileFilterUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileFilterProcInfo, GetCurrentArchitecture())
  182. #define NewDlgHookYDProc(userRoutine)                             (DlgHookYDUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDlgHookYDProcInfo, GetCurrentArchitecture())
  183. #define NewModalFilterYDProc(userRoutine)                         (ModalFilterYDUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppModalFilterYDProcInfo, GetCurrentArchitecture())
  184. #define NewFileFilterYDProc(userRoutine)                         (FileFilterYDUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppFileFilterYDProcInfo, GetCurrentArchitecture())
  185. #define NewActivateYDProc(userRoutine)                             (ActivateYDUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppActivateYDProcInfo, GetCurrentArchitecture())
  186. #define CallDlgHookProc(userRoutine, item, theDialog)             CALL_TWO_PARAMETER_UPP((userRoutine), uppDlgHookProcInfo, (item), (theDialog))
  187. #define CallFileFilterProc(userRoutine, pb)                     CALL_ONE_PARAMETER_UPP((userRoutine), uppFileFilterProcInfo, (pb))
  188. #define CallDlgHookYDProc(userRoutine, item, theDialog, yourDataPtr)  CALL_THREE_PARAMETER_UPP((userRoutine), uppDlgHookYDProcInfo, (item), (theDialog), (yourDataPtr))
  189. #define CallModalFilterYDProc(userRoutine, theDialog, theEvent, itemHit, yourDataPtr)  CALL_FOUR_PARAMETER_UPP((userRoutine), uppModalFilterYDProcInfo, (theDialog), (theEvent), (itemHit), (yourDataPtr))
  190. #define CallFileFilterYDProc(userRoutine, pb, yourDataPtr)         CALL_TWO_PARAMETER_UPP((userRoutine), uppFileFilterYDProcInfo, (pb), (yourDataPtr))
  191. #define CallActivateYDProc(userRoutine, theDialog, itemNo, activating, yourDataPtr)  CALL_FOUR_PARAMETER_UPP((userRoutine), uppActivateYDProcInfo, (theDialog), (itemNo), (activating), (yourDataPtr))
  192. typedef OSType                             SFTypeList[4];
  193. /*
  194.     The GetFile "typeList" parameter type has changed from "SFTypeList" to "ConstSFTypeListPtr".
  195.     For C, this will add "const" and make it an in-only parameter.
  196.     For Pascal, this will require client code to use the @ operator, but make it easier to specify long lists.
  197.  
  198.     ConstSFTypeListPtr is a pointer to an array of OSTypes.
  199. */
  200. typedef const OSType *                    ConstSFTypeListPtr;
  201.  
  202. EXTERN_API( void )
  203. SFPutFile                        (Point                     where,
  204.                                  ConstStr255Param         prompt,
  205.                                  ConstStr255Param         origName,
  206.                                  DlgHookUPP             dlgHook,
  207.                                  SFReply *                reply)                                THREEWORDINLINE(0x3F3C, 0x0001, 0xA9EA);
  208.  
  209. EXTERN_API( void )
  210. SFGetFile                        (Point                     where,
  211.                                  ConstStr255Param         prompt,
  212.                                  FileFilterUPP             fileFilter,
  213.                                  short                     numTypes,
  214.                                  ConstSFTypeListPtr     typeList,
  215.                                  DlgHookUPP             dlgHook,
  216.                                  SFReply *                reply)                                THREEWORDINLINE(0x3F3C, 0x0002, 0xA9EA);
  217.  
  218. EXTERN_API( void )
  219. SFPPutFile                        (Point                     where,
  220.                                  ConstStr255Param         prompt,
  221.                                  ConstStr255Param         origName,
  222.                                  DlgHookUPP             dlgHook,
  223.                                  SFReply *                reply,
  224.                                  short                     dlgID,
  225.                                  ModalFilterUPP         filterProc)                            THREEWORDINLINE(0x3F3C, 0x0003, 0xA9EA);
  226.  
  227. EXTERN_API( void )
  228. SFPGetFile                        (Point                     where,
  229.                                  ConstStr255Param         prompt,
  230.                                  FileFilterUPP             fileFilter,
  231.                                  short                     numTypes,
  232.                                  ConstSFTypeListPtr     typeList,
  233.                                  DlgHookUPP             dlgHook,
  234.                                  SFReply *                reply,
  235.                                  short                     dlgID,
  236.                                  ModalFilterUPP         filterProc)                            THREEWORDINLINE(0x3F3C, 0x0004, 0xA9EA);
  237.  
  238. EXTERN_API( void )
  239. StandardPutFile                    (ConstStr255Param         prompt,
  240.                                  ConstStr255Param         defaultName,
  241.                                  StandardFileReply *    reply)                                THREEWORDINLINE(0x3F3C, 0x0005, 0xA9EA);
  242.  
  243. EXTERN_API( void )
  244. StandardGetFile                    (FileFilterUPP             fileFilter,
  245.                                  short                     numTypes,
  246.                                  ConstSFTypeListPtr     typeList,
  247.                                  StandardFileReply *    reply)                                THREEWORDINLINE(0x3F3C, 0x0006, 0xA9EA);
  248.  
  249. EXTERN_API( void )
  250. CustomPutFile                    (ConstStr255Param         prompt,
  251.                                  ConstStr255Param         defaultName,
  252.                                  StandardFileReply *    reply,
  253.                                  short                     dlgID,
  254.                                  Point                     where,
  255.                                  DlgHookYDUPP             dlgHook,
  256.                                  ModalFilterYDUPP         filterProc,
  257.                                  ActivationOrderListPtr  activeList,
  258.                                  ActivateYDUPP             activate,
  259.                                  void *                    yourDataPtr)                        THREEWORDINLINE(0x3F3C, 0x0007, 0xA9EA);
  260.  
  261. EXTERN_API( void )
  262. CustomGetFile                    (FileFilterYDUPP         fileFilter,
  263.                                  short                     numTypes,
  264.                                  ConstSFTypeListPtr     typeList,
  265.                                  StandardFileReply *    reply,
  266.                                  short                     dlgID,
  267.                                  Point                     where,
  268.                                  DlgHookYDUPP             dlgHook,
  269.                                  ModalFilterYDUPP         filterProc,
  270.                                  ActivationOrderListPtr  activeList,
  271.                                  ActivateYDUPP             activate,
  272.                                  void *                    yourDataPtr)                        THREEWORDINLINE(0x3F3C, 0x0008, 0xA9EA);
  273.  
  274. EXTERN_API( OSErr )
  275. StandardOpenDialog                (StandardFileReply *    reply);
  276.  
  277. #if CGLUESUPPORTED
  278. EXTERN_API_C( void )
  279. sfpputfile                        (Point *                where,
  280.                                  const char *            prompt,
  281.                                  const char *            origName,
  282.                                  DlgHookUPP             dlgHook,
  283.                                  SFReply *                reply,
  284.                                  short                     dlgID,
  285.                                  ModalFilterUPP         filterProc);
  286.  
  287. EXTERN_API_C( void )
  288. sfgetfile                        (Point *                where,
  289.                                  const char *            prompt,
  290.                                  FileFilterUPP             fileFilter,
  291.                                  short                     numTypes,
  292.                                  ConstSFTypeListPtr     typeList,
  293.                                  DlgHookUPP             dlgHook,
  294.                                  SFReply *                reply);
  295.  
  296. EXTERN_API_C( void )
  297. sfpgetfile                        (Point *                where,
  298.                                  const char *            prompt,
  299.                                  FileFilterUPP             fileFilter,
  300.                                  short                     numTypes,
  301.                                  ConstSFTypeListPtr     typeList,
  302.                                  DlgHookUPP             dlgHook,
  303.                                  SFReply *                reply,
  304.                                  short                     dlgID,
  305.                                  ModalFilterUPP         filterProc);
  306.  
  307. EXTERN_API_C( void )
  308. sfputfile                        (Point *                where,
  309.                                  const char *            prompt,
  310.                                  const char *            origName,
  311.                                  DlgHookUPP             dlgHook,
  312.                                  SFReply *                reply);
  313.  
  314. #endif  /* CGLUESUPPORTED */
  315.  
  316.  
  317.  
  318. #if PRAGMA_STRUCT_ALIGN
  319.     #pragma options align=reset
  320. #elif PRAGMA_STRUCT_PACKPUSH
  321.     #pragma pack(pop)
  322. #elif PRAGMA_STRUCT_PACK
  323.     #pragma pack()
  324. #endif
  325.  
  326. #ifdef PRAGMA_IMPORT_OFF
  327. #pragma import off
  328. #elif PRAGMA_IMPORT
  329. #pragma import reset
  330. #endif
  331.  
  332. #ifdef __cplusplus
  333. }
  334. #endif
  335.  
  336. #endif /* __STANDARDFILE__ */
  337.  
  338.